Non-volatile memories, such as flash EPROM (erasable programmable read-only memory) devices have developed into a popular source of memory in a wide range of digital applications. Flash memory devices typically allow for high memory densities, high reliability, and low power consumption. These characteristics have made flash memory very popular for low power applications, such as embedded memory circuits. Common uses of non-volatile memory include portable computers, personal digital assistant (PDA) devices, digital cameras, cellular telephones, TV boxes, routers, copy machines, and any number of other consumer products. In these devices, both program code and system data, such as configuration parameters and other firmware, are often stored in flash memory, because of the compact storage and relative ease of software upgradeability.
Non-volatile memories are also often used in computer systems to store modular and upgradeable information, such as basic input/output software (BIOS), so pieces of the platform may be updated without having to frequently replace components in the system. With flash memory devices, operations, such as erasing stored code or data are often performed in blocks instead of on a bit-by-bit basis. However, programming may generally be performed one bit, one byte or one word at a time. The use of flash memory to store upgradeable data has necessitated the development of mechanisms to protect the data from unintended erasure or reprogramming.
To ensure the integrity of block-based flash memory, block protection schemes are needed to protect stored data when the memory is modified through program or erase operations. For example, critical system code, such as boot code, may be stored in a lockable “boot block” of the device, while other blocks are allocated to other portions of code or data. Some original equipment manufacturers (OEMs) and other purchasers of non-volatile memory want to protect areas of flash pre-programmed from access by users. As a consequence, permanent locking mechanisms have been implemented to be programmed once to lock access to blocks in a flash device. However, with the frequency of hardware and software updates in the industry today, other features, such as temporary locking have been implemented.
Yet, to meet different customer's demands of different configurations of enabled features, non-volatile memory manufacturers repeatedly have to re-design and re-manufacture parts, which is potentially expensive and time consuming. Providing diverse features to a number of customers with conflicting requirements has required maintaining excessive inventory and shipment tracking systems, and threatens the value of product returned for refund.